package org.hope6537.note.thinking_in_java.eighteen;/*package org.hope6537.note.thinking_in_java.eighteen;

//: xml/Person.java
//Use the XOM library to write and read XML
//{Requires: nu.xom.Node; You must install
//the XOM library from http://www.xom.nu }
import nu.xom.*;
import java.io.*;
import java.util.*;

public class Person {
	private String first, last;

	public Person(String first, String last) {
		this.first = first;
		this.last = last;
	}

	// Produce an XML Element from this Person object:
	public Element getXML() {
		Element person = new Element("person");
		Element firstName = new Element("first");
		firstName.appendChild(first);
		Element lastName = new Element("last");
		lastName.appendChild(last);
		person.appendChild(firstName);
		person.appendChild(lastName);
		return person;
	}

	// Constructor to restore a Person from an XML Element:
	public Person(Element person) {
		first = person.getFirstChildElement("first").getValue();
		last = person.getFirstChildElement("last").getValue();
	}

	public String toString() {
		return first + " " + last;
	}

	// Make it human-readable:
	public static void format(OutputStream os, Document doc) throws Exception {
		Serializer serializer = new Serializer(os, "ISO-8859-1");
		serializer.setIndent(4);
		serializer.setMaxLength(60);
		serializer.write(doc);
		serializer.flush();
	}

	public static void main(String[] args) throws Exception {
		List<Person> people = Arrays.asList(
				new Person("Dr. Bunsen", "Honeydew"), new Person("Gonzo",
						"The Great"), new Person("Phillip J.", "Fry"));
		System.out.println(people);
		Element root = new Element("people");
		for (Person p : people)
			root.appendChild(p.getXML());
		Document doc = new Document(root);
		format(System.out, doc);
		format(new BufferedOutputStream(new FileOutputStream("People.xml")),
				doc);
	}
} 
 * Output: [Dr. Bunsen Honeydew, Gonzo The Great, Phillip J. Fry] <?xml
 * version="1.0" encoding="ISO-8859-1"?> <people> <person> <first>Dr.
 * Bunsen</first> <last>Honeydew</last> </person> <person> <first>Gonzo</first>
 * <last>The Great</last> </person> <person> <first>Phillip J.</first>
 * <last>Fry</last> </person> </people>
 // :~

*/
